<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	{
		// 1- 如何定义
		// class Box {
		//
		// }
		// const Desk = class {
		//
		// }
		
	}
	{
		// 2- 特点：
		// 2-1- 不允许重复定义
		// class Box{
		//
		// }
		// class Box{
		//
		// }
		
		// 2-2- 没有提升
		// console.log(new Box())
		// class Box{
		//
		// }
		// console.log(new Box())
		
		// 2-3- 本质是一个函数
		// class Box{
		//
		// }
		//
		// console.log(typeof Box);// function
	}
	{
		// 3- 作用：可以实例化对象
		// class Box{
		// 	num = 100;// 实例属性
		// 	constructor(userName,age) {
		// 		// 实例属性
		// 		this.userName = userName;
		// 		this.age = age;
		// 	}
		// 	// 原型方法
		// 	run(){
		//
		// 	}
		// 	// 原型方法
		// 	my(){
		//
		// 	}
		// }
		// // 原型方法
		// Box.prototype.fn = function(){
		//
		// }
		//
		// console.log(new Box("zhangsan",12));
		// console.log(Box.prototype.constructor === Box);// true
		
	}
	{
		// 4-继承
		// class Box{
		// 	userName="zhangsan";
		// 	constructor(a,b,c,d) {
		// 		this.a = a;
		// 		this.b = b;
		// 		this.c = c;
		// 		this.d = d;
		// 	}
		// }
		// class Desk extends Box{
		// 	age = 100;
		// 	// constructor(a,b,c,d) {
		// 	// 	super(a,b,c,d);
		// 	// }
		// }
		//
		// console.log(new Desk(1,2,3,4))
		
	}
	{
		// 5- 静态方法与属性
		// class Box{
		// 	static a = 1;
		// 	static fn(){
		// 		console.log("fn")
		// 	}
		// }
		// Box.userName = "zhangsan";
		// console.log(Box.userName);// zhangsan
		// console.log(Box.a);// 1
		// Box.fn();// fn
	}
	{
		// 6- 继承
		// class Box{
		// 	static userName="zhangsan";
		// 	static run(){
		// 		console.log("box-run")
		// 	}
		// }
		// class Desk extends Box{
		// 	static run(){
		// 		console.log("desk->run");
		// 		super.run();
		// 	}
		// }
		//
		// console.log(Desk.userName);
		// Desk.run();
		
	}
</script>
</html>